<?php
// 前台登录类
namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Session;


class LoginController extends Controller
{
	
	// 登录页面
    public function login( $next_url='' )
	{
		if( $next_url=='next_url' )
		{
			// 购物车页 跳到 登录页 标记
			Session::put('next_url','/cart');
		}else
		{
			Session::put('next_url','');
		}
		
		$isLogin = \Cookie::get('isLogin');
		// 根据cookie 来判断是否需要重新输入用户 密码
		if( $isLogin )
		{
			$user_info = DB::table('user')
					->where( 'id','=',$isLogin )
					// 状态正常
					->where( 'status','=','1' )
					->first();
			$name = $user_info ->name;
			$pass = $user_info ->pass;
			// 带着名字 密码 到登录页面
			return view('Home.login.login',['name'=>$name,'pass'=>$pass]);
		}
		
		// 登录页面
		return view('Home.login.login');
	}
	
	// 执行 用户登录
	public function doLogin(Request $request)
	{
		// 验证登录信息
		$data = $request -> except('_token');
		$user_info = DB::table('user')
						// 名字
						->where( 'name','=',$data['name'] )
						// 电话
						->orWhere('phone','=',$data['name'])
						// 密码
						->where( 'pass','=',$data['pass'] )
						// 状态正常
						->where( 'status','=','1' )
						->first();
		// 验证 通过 
		if( $user_info )
		{
			// 获取用户ID
			$user_id = $user_info->id;
			// 1. 修改 登录时间
			$res = 	DB::table('user')
						->where( 'id','=',$user_id )
						->update(['lasttime'=>date('Y-m-d H:i:s',time())]);
			// 2. 是否 记住	
			if( $request -> has('rememberMe') )
			{
				// 记住我
				// 设置cookie 7天免登录
				\Cookie::queue('isLogin',$user_id,60*24*7);
			}else
			{
				// 设置cookie 为空
				\Cookie::queue('isLogin','');
			}
			// 获取用户信息
			$current_user = $this -> getUserName( $user_id );
			// 3. 设置session 用户ID
			Session::put('user_id',$user_id);
			// 设置session 用户名
			Session::put('user_name',$current_user->name ); 
			
			if( empty( Session::get('next_url') ) )
			{
				// 跳转到前台首页
				return redirect('/');
			}else
			{
				// 跳转到购物车页
				return redirect('/cart');
			}
			
		}else
		{
			// 验证 失败
			// 闪存名字
			$request -> flashOnly(['name']);
			// 回到登录页面
			return back()->with( ['info'=>'请检查用户名或密码','name'=>$data['name'] ] );
		}
	}
	
	// 退出登录
	public function loginOut()
	{
		
		
		// 清除session
		Session::forget('user_id');
		Session::forget('user_name');
		Session::forget('cart');
		Session::forget('cartTotal');
		// 清除cookie
		\Cookie::queue('isLogin','');
		// return back();
		return redirect('/');
	
	
	}
	
	
	// 注册页面
    public function reg()
	{
		// 注册页面
		return view('Home.login.reg');
	}
	
	// 执行 用户注册
    public function doReg(Request $request)
	{
		$data = $request -> except('_token');
		
		// 名字 为空
		if( empty($data['name']) ){
			// 闪存 电话
			$request -> flashOnly(['phone']);
			return redirect('/reg')->with( ['info'=>'请输入用户名'] );
		}
		
		// 电话 为空
		if( empty($data['phone']) )
		{
			// 闪存 名字
			$request -> flashOnly(['name']);
			return redirect('/reg')->with( ['info'=>'请输入手机号'] );
		}else
		{
			// 查询 电话是否已注册
			$user = DB::table('user')->where('phone','=',$data['phone'])->first();
			if( !empty($user) )
			{
				// 闪存 名字 电话
				$request -> flashOnly(['name','phone']);
				return redirect('/reg')->with( ['info'=>'该手机号已经注册'] );
			}
		}
		
		// 密码 为空
		if( empty($data['pass']) ){
			// 闪存 名字 手机号
			$request -> flashOnly(['name','phone']);
			return redirect('/reg')->with( ['info'=>'请输入密码'] );
		}
		// 确认密码
		if( empty($data['repass']) ){
			// 闪存 名字 手机号
			$request -> flashOnly(['name','phone']);
			return redirect('/reg')->with( ['info'=>'请输入确认密码'] );
		}
		if( $data['pass']!=$data['repass'] ){
			// 闪存 名字 手机号
			$request -> flashOnly(['name','phone']);
			return redirect('/reg')->with( ['info'=>'两次密码输入不一致'] );
		}
		$data['regtime']=date('Y-m-d H:i:s',time());
		$data['lasttime']=date('Y-m-d H:i:s',time());
		unset($data['repass']);
		// 插入
		$insert_id = DB::table('user')->insertGetId($data);
		if( $insert_id )
		{
			return back()->with( ['info'=>'注册成功'] );
		}else
		{
			return back()->with( ['info'=>'注册失败'] );
		}
	}
	
	
	
	
	
	
	
}
